package common.util;

import java.io.File;
import java.io.IOException;
import java.util.List;

public class VideoPictureUtil {

	// final String ffmpegPath = "/usr/local/bin/ffmpeg";
	final String ffmpegPath = "/usr/share/ffmpeg";

	public static void main(String[] args) {
		String ffmpegPath = "/usr/local/bin/ffmpeg";
		File ffmpegFile = new File(ffmpegPath);

		// String videoPath="/Users/ranhongmin/Downloads/20180222032428pc.mp4";
		// String imagePath="/Users/ranhongmin/Work/Intellij_project/ordinary/common/src/main/java/cn/ffmpeg/util/image/qq.jpg";

		// System.out.println("执行结果"+getVideoImage(ffmpegFile,videoPath,imagePath));
	}


	public String makeVodPic(File file) throws IOException {
	// public void main(String[] args)throws Exception{
		//1.获取当前工程目录,获取ffmpeg.exe
		// File directory = new File(".");
		// String root = directory.getCanonicalPath();
		// ffmpegPath = "/usr/local/bin/ffmpeg";
		File ffmpegFile = new File(ffmpegPath);
		
		// String videoPath="/Users/ranhongmin/Downloads/20180222032428pc.mp4";
		// String imagePath="/Users/ranhongmin/Work/Intellij_project/ordinary/common/src/main/java/cn/ffmpeg/util/image/qq.jpg";
		String imageName = "videoPiv"+ DateUtil.nowDateAddDays4Format(0, "yyyyMMddhhmmssSSS") ;
		String imagePath="/tmp/"+imageName+".jpg";
		// System.out.println("执行结果"+getVideoImage(ffmpegFile,file,imagePath));
		String j = getVideoImage(ffmpegFile,file,imagePath);
		return j;
	}
	
	/**
	 * 获得视频缩略图，获取成功返回true，获取失败返回false
	 * @param ffmpegPath  是ffmpeg.exe存放的路径
	 * @param file   是视频文件的存放路径
	 * @param outImagePath 输出缩略图的保存路径
	 * @return
	 */
	public static String getVideoImage(File ffmpegPath,File file,String outImagePath ) {
		String path = file.getPath();
		if (!file.exists()) {//判断视频文件是否存在
			System.err.println("路径[" + path + "]对应的视频文件不存在!");
			return "0";
		}
		//设置参数
		List<String> commands = new java.util.ArrayList<String>();
		commands.add(ffmpegPath.getPath());//这里设置ffmpeg.exe存放的路径
		commands.add("-i");
		commands.add(path);//这里是设置要截取缩略图的视频的路径
		commands.add("-y");
		commands.add("-f");
		commands.add("image2");
		commands.add("-ss"); 
		commands.add("1");//这里设置的是要截取视频开始播放多少秒后的图，可以自己设置时间
		commands.add("-t");
		commands.add("0.001");
		commands.add("-s");
		commands.add("320x240");//这里设置输出图片的大小
		commands.add(outImagePath);//这里设置输出的截图的保存路径
	
		try {
		    //截取缩略图并保存	
			ProcessBuilder builder = new ProcessBuilder();
			builder.command(commands);
			builder.start();
			return outImagePath;
		} catch (Exception e) {
			e.printStackTrace();
			return "0";
		}
	}
}
